1. Field of the Invention
This invention relates to the field of digital filtering.
2. Description of the Prior Art
It is known to provide digital filters, such as finite impulse response (FIR) filters and infinite impulse response (IIR) filters, comprising a chain of connected delay elements from between which taps are taken to multipliers. The multipliers apply appropriate weighting coefficients to the tap values before passing the weighted values to an adder that produces a filtered output value. Such digital filters are able to provide accurate and stable filter characteristics that make them suitable for use in high quality signal processing application, e.g. frequency separation and combination as part of transformations from the spatial domain to the frequency domain within an image data compression system.
One particular problem with digital filters of this type stems from the length of the chain of delay elements. In some filters, there may be tens or even hundreds of delay elements. Typically, when filtering data, a filtered output value relating to a particular position within the input data values will be produced when that position within the input data values is at the centre of the chain of delay elements. It is often the case that the data values to be filtered are formed of blocks of data values such as lines of image data values from a rastered image. In this case, filtered values for the edges of the blocks will be output when the input data values corresponding to the edges of the block are at the centre of the chain of delay elements. At such times, the chain of delay elements will only be half full of valid data. Unless this is compensated for, undesirable distortions (edge effects) will be introduced.
One technique of dealing with this is to extend the edges of the data in the manner described in co-pending U.S. patent application Ser. No. 07/957,094, filed Oct. 7, 1992, and which corresponds to British Patent Application 9124343.6 published as 2 261 565. Edge extension can take a number of forms. One of these forms is so-called symmetric edge extension whereby data values are repeated around the edges of the block of data in a manner as if they had been reflected by a mirror placed at the edge. Consider the data block:
1, 2, 3, 4, . . . , n-3, n-2, n-1, n. PA1 3, 2, 1, 2, 3, 4, . . . , n-3, n-2, n-1, n, n-1, n-2
This data block when subject to symmetric edge extension would, for example, become:
One way of providing such edge extensions is to store each block of data values in memory and then read the data values from the memory in a modified sequence that produces an edge extended data block. Whilst this is effective in producing the correct sequence of data values, it can use disadvantageously large amounts of memory in applications such as image processing where the amount of data being handled is high and also introduces a delay into the processing of the system.